用0-1变量表达逻辑关系、处理非凸约束、构建复杂模型
0-1变量不仅是"选或不选"的标志,更是将逻辑命题转化为线性约束的核心工具。设 $x_i \in \B$ 为0-1变量:
| 逻辑关系 | 语义 | 线性约束表示 |
|---|---|---|
| $P \land Q$(与) | $x_P=1$ 且 $x_Q=1$ | $x_P=1,\; x_Q=1$ |
| $P \lor Q$(或) | $x_P=1$ 或 $x_Q=1$(可同时) | $x_P + x_Q \ge 1$ |
| $\neg P$(非) | $x_P=0$ | $x_P=0$ 或用 $1-x_P$ |
| $P \oplus Q$(异或) | 恰好一个为1 | $x_P + x_Q = 1$ |
| $P \Rightarrow Q$(蕴含) | 若 $x_P=1$ 则 $x_Q=1$ | $x_P \le x_Q$ |
| $P \lor Q \Rightarrow R$ | 若P或Q,则必须R | $x_P \le x_R,\; x_Q \le x_R$ |
| 至少k个为真 | $\sum x_i \ge k$ | $\sum_{i} x_i \ge k$ |
| 至多k个为真 | $\sum x_i \le k$ | $\sum_{i} x_i \le k$ |
| 恰好k个为真 | $\sum x_i = k$ | $\sum_{i} x_i = k$ |
| 两者都选或都不选 | $x_2=x_6$ | $x_2 - x_6 = 0$ |
蕴含 $P \Rightarrow Q$ → $x_P \le x_Q$:如果P选(1),则Q必须选(1),所以$1 \le 1$;如果P不选(0),Q随意($0 \le$ 任意)。
互斥 $P$ 与 $Q$ 不能同时选 → $x_P + x_Q \le 1$
指示约束刻画:"如果某个条件成立,则某个线性约束才需要被满足"。
用0-1变量 $\delta$ 指示命题 $P$ 是否为真:
关键应用:指示变量 $\delta$ 与连续条件 $x>0$ 的双向关系——
其中 $M$ 是 $x$ 的充分大上界,$m$ 是 $x$ 取正时的充分小下界。
$M$ 值的选择至关重要:
许多实际问题涉及分段成本(如阶梯电价、批量折扣),模型如下:
对分段线性函数 $f(x)$,取断点 $(a_k, b_k)$,引入权重 $\lambda_k$:
SOS2(Special Ordered Set of type 2)约束:$\{\lambda_k\}$ 中至多两个相邻的取正值。
对 $n$ 段的分段函数,引入 $n$ 个0-1变量 $z_k$:
每段内 $x$ 在该段内线性插值。SOS2更紧但需要求解器支持;0-1方法通用但变量更多。
要求满足两组约束中的至少一组:
引入0-1变量 $y \in \B$ 和充分大的 $M$:
当 $y=1$:第一个约束生效,第二个被"关掉"($+M$ 使右边极大);当 $y=0$:反之。
变量 $x$ 只能取离散集合 $\{v_1, v_2, \dots, v_k\}$:
当涉及0-1变量与连续变量的乘积 $x \cdot \delta$($\delta \in \B$),可直接线性化:
当 $\delta=0$:$w=0$;当 $\delta=1$:$w=x$。$M$ 和 $m$ 分别是 $x$ 的上下界。
McCormick 方法适用于两个连续变量的乘积(松弛近似);这里的方法适用于0-1 × 连续的乘积(精确等价转化)。在实际建模中,如果能把双线性问题重构为含0-1变量的形式,就能得到精确的MIP模型。
预算 $14,000。6个投资项目,各需投资 $c_j$,净现值 $v_j$。需满足以下逻辑约束:
这是一个0-1背包问题(0-1 Knapsack Problem)。
| # | 逻辑条件 | 线性约束 |
|---|---|---|
| 1 | 恰好选3支股票 | $x_1+x_2+x_3+x_4+x_5+x_6 = 3$ |
| 2 | 若选2,则必须选1 | $x_2 \le x_1$ |
| 3 | 若选1,则不选3 | $x_1 + x_3 \le 1$ |
| 4 | 4和5中恰好选一个 | $x_4 + x_5 = 1$ |
| 5 | 2和6要么都选,要么都不选 | $x_2 - x_6 = 0$ |
拖动预算滑块,观察最优解的变化:
调整预算观察不同约束下的最优投资组合...
旅行商问题(TSP)是展示逻辑变量建模能力的最佳案例之一。
设 $x_{ij} \in \B$ 表示是否从城市 $i$ 到城市 $j$。
但这还不够!以上约束无法消除子环(subtours)。
引入连续变量 $u_i$(访问顺序),加入:
原理:如果 $x_{ij}=1$(从 $i$ 到 $j$),则 $u_j \ge u_i + 1$,迫使访问顺序严格递增,从而阻断子环。
点击画布添加城市,点击"求解"查看结果。
| 场景 | 核心技巧 | 关键公式 |
|---|---|---|
| 逻辑关系 | 0-1变量的线性不等式 | $x_2 \le x_1$(蕴含) |
| 指示约束 | Big-M 方法 | $x \le M\delta,\; x \ge m\delta$ |
| 分段函数 | SOS2 或 0-1分段 | $\sum \lambda_k a_k,\; \sum z_k=1$ |
| 择一约束 | 互补Big-M | $a_1^T x \le b_1 + M(1-y)$ |
| 双线性(0-1×连续) | 四约束精确线性化 | $w \le M\delta,\; w \ge m\delta,\dots$ |
| 子环消除(TSP) | MTZ 顺序变量 | $u_i-u_j+n x_{ij} \le n-1$ |
| 固定费用 | 0-1 + Big-M | $\text{cost} = Fy + cx,\; x \le My$ |
推荐阅读微信文章:"优化模型的建立与转化"和"优化中逻辑约束建模与Gurobi实现——线性化技巧小结",涵盖更多高级线性化技巧和求解器实现细节。
每题选择后查看详细解析。
逻辑命题"如果选项目A,则不能选项目B"的正确线性约束是:
在 Big-M 方法中,$M$ 值的选择对求解效率有重要影响。以下说法正确的是:
TSP的赋值模型(assignment model)为什么不能保证得到一条完整回路?